import http from "@/api";
import { ReqPage, ResPage } from "@/api/interface";

const baseUrl: string = "/job";

export interface JobPageParam extends ReqPage {
  // 执行bean的名称
  beanName?: string;
  // 任务状态 参考字典: ScheduleJobStatus
  status?: number;
}

export interface JobPageResult {
  id: string;
  // 执行bean的名称
  beanName: string;
  // 执行参数
  params: string;
  // cron表达式
  cronExpression: string;
  // 任务状态 参考字典: ScheduleJobStatus
  status: number;
  // 备注
  remark: string;
  createTime: string;
  updateTime: string;
}

export const getJobPage = (param: JobPageParam) => {
  return http.get<ResPage<JobPageResult>>(baseUrl + `/page`, param);
};

export interface JobInfoResult {
  id: string;
  // 执行bean的名称
  beanName: string;
  // 执行参数
  params: string;
  // cron表达式
  cronExpression: string;
  // 任务状态 参考字典: ScheduleJobStatus
  status: number;
  // 备注
  remark: string;
}

export const getJobInfo = (id: string) => {
  return http.get<JobInfoResult>(baseUrl + `/info/` + id);
};

export interface JobSaveParam {
  // 执行bean的名称
  beanName?: string;
  // 执行参数
  params?: string;
  // cron表达式
  cronExpression?: string;
  // 备注
  remark?: string;
}

export const saveJob = (param: JobSaveParam) => {
  return http.post(baseUrl + `/save`, param);
};

export interface JobUpdateParam {
  id?: string;
  // 执行bean的名称
  beanName?: string;
  // 执行参数
  params?: string;
  // cron表达式
  cronExpression?: string;
  // 备注
  remark?: string;
}

export const updateJob = (param: JobUpdateParam) => {
  return http.post(baseUrl + `/update`, param);
};

export const deleteJob = (ids: string[]) => {
  return http.post(baseUrl + `/delete`, ids);
};

/**
 * 执行一次
 * @param ids
 */
export const runJob = (ids: string[]) => {
  return http.post(baseUrl + `/run`, ids);
};

/**
 * 暂停定时任务
 * @param ids
 */
export const pauseJob = (ids: string[]) => {
  return http.post(baseUrl + `/pause`, ids);
};

/**
 * 恢复定时任务
 * @param ids
 */
export const resumeJob = (ids: string[]) => {
  return http.post(baseUrl + `/resume`, ids);
};
